package cn.edu.scau.cmi.liangzaoqing.client;

import java.util.Iterator;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import cn.edu.scau.cmi.liangzaoqing.hibernate.dao.MajorDAO;
import cn.edu.scau.cmi.liangzaoqing.hibernate.domain.Major;
import cn.edu.scau.cmi.liangzaoqing.util.HibernateSessionFactoryUtil;


/*
 * 在第5个例子的基础上，再次抽取出DAO，该DAO通常情况下，需要依赖Hibernate来对数据进行CRUD，特殊情况下使用JDBC。
 * 注意，Hibernate的DAO的具体实现尽可能使用Hibernate中已经实现了的方法，例如，保存实体类数据，使用session.save()的方法。
 * 因此
 * */

public class HibernateClient6HibernateDao {

	public static void main(String[] args) {
		Major major=new Major();
		major.setName("服装工程");
		major.setId(6L);

		newMajor(major);
		listMajors();
	}
		public static void newMajor(Major major) {
			HibernateSessionFactoryUtil hibernateSessionFactoryUtil = new HibernateSessionFactoryUtil();
//			！！！DAO通常情况下，需要依赖Hibernate来对数据进行CRUD，因此，在MajorDAO中需要依赖hibernateSessionFactoryUtil，这个对象可以引用Hibernate中的相关对象。
			MajorDAO majorDAO=new MajorDAO();
			majorDAO.setSessionFactoryUtil(hibernateSessionFactoryUtil);
			
			majorDAO.save(major);
		}

	private static void listMajors() {
		HibernateSessionFactoryUtil hibernateSessionFactoryUtil = new HibernateSessionFactoryUtil();

		MajorDAO majorDAO=new MajorDAO();
		majorDAO.setSessionFactoryUtil(hibernateSessionFactoryUtil);
		
		List Majors = majorDAO.findAll();
		Iterator<?> MajorIterator = Majors.iterator();
		while(MajorIterator.hasNext()){
			Major Major = (Major) MajorIterator.next();
			System.out.println("调用DAO后的专业名是："+Major.getName()+"，调用DAO后的专业ID号是："+Major.getId());
		}
	}
}